from flask_sqlalchemy import SQLAlchemy
from flask_login import LoginManager
from flask_mail import Mail
from dotenv import load_dotenv
import os

# 此作用是为了防止在调用的时候报循环调用错误
db = SQLAlchemy()
login_manager = LoginManager()
Mail = Mail()

# 加载.env文件
# load_dotenv() 函数会自动查找并加载当前目录下的 .env 文件。
# 如果 .env 文件不在当前目录，您可以传入文件路径作为参数
load_dotenv()

# 数据库配置
HOSTNAME = os.getenv('DATABASE_HOSTNAME')
PORT = os.getenv('DATABASE_PORT')
USERNAME = os.getenv('DATABASE_USERNAME')
PASSWORD = os.getenv("PASSWORD")
DATABASE = os.getenv('DATABASE_NAME')
SQLALCHEMY_DATABASE_URI = f"mysql+pymysql://{USERNAME}:{PASSWORD}@{HOSTNAME}:{PORT}/{DATABASE}?charset=utf8"
# SQLALCHEMY_POOL_RECYCLE=400

# 缓存配置
CACHE_TYPE = "SimpleCache"  # 缓存类型
CACHE_DEFAULT_TIMEOUT = 300  # 默认缓存过期时间（秒）

# 发送邮箱配置
MAIL_SERVER = os.getenv('MAIL_SERVER')  # 邮件服务器的名称/IP地址/SMTP服务器地址
MAIL_PORT = os.getenv('MAIL_PORT')   # 使用的服务器的端口号
MAIL_USE_SSL = os.getenv('MAIL_USE_SSL')   # 启用传输安全层加密
MAIL_USERNAME = os.getenv('MAIL_USERNAME')  # 发件人的用户名
MAIL_PASSWORD = os.getenv('MAIL_PASSWORD')  # 发件人邮箱的SMTP加密码
# 对于某些邮件服务提供商，如QQ，您可能需要生成一个专门的SMTP密码或授权码，而不是使用您的常规密码。

#密钥
SECRET_KEY = "guojun1997"